package main
import(
	"fmt"
	"go_code/customerManager/service"
	"go_code/customerManager/model"
)

type customerView struct{
	key string // 接收用户输入
	loop bool // 是否循环显示主菜单

	customerService *service.CustomerService
}
// 显示所有的客户信息
func(this *customerView) list(){
	// 首先获取当前所有的客户信息（在切片中）
	customers :=this.customerService.List()
	// 显示
	fmt.Println("------------------客户列表------------")
	fmt.Println("编号\t姓名\t性别\t年龄\t电话\t邮箱")
	for i:=0;i<len(customers);i++{
		fmt.Println(customers[i].GetInfo())
	}
	fmt.Println("客户列表完成")
}

func (this *customerView) add(){
	fmt.Println("-------添加客户---------")
	fmt.Println("姓名:")
	name :=""
	fmt.Scanln(&name)
	fmt.Println("性别:")
	gender :=""
	fmt.Scanln(&gender)
	fmt.Println("年龄:")
	age :=0
	fmt.Scanln(&age)
	fmt.Println("电话:")
	phone :=""
	fmt.Scanln(&phone)
	fmt.Println("邮箱:")
	email:=""
	fmt.Scanln(&email)

	 customer := model.NewCustomer2(name,gender,age,phone,email)

	 if this.customerService.Add(customer){
		 fmt.Println("------添加完成------")
	 }else {
		 fmt.Println("------添加失败------")
	 }
}


func(this *customerView) delete(){
	fmt.Println("-----------删除客户----t--------")
	fmt.Println("请选择待删除客户编号(-1退出)")
	id := -1
	fmt.Scanln(&id)
	if id == -1{
		return // 放弃删除操作
	}

	fmt.Println("确认是否删除(Y/N)")
	choice := ""
	fmt.Scanln(&choice)
	if choice =="y" || choice =="Y" {
		if this.customerService.Delete(id){
			fmt.Println("------删除成功------")
		}else {
			fmt.Println("------删除失败,输入的id号不存在")
		}
		
	}
}

func (this *customerView) update(){
	fmt.Println("-------修改客户---------")
	fmt.Println("请输入编号:")
	index := -1
	fmt.Scanln(&index)

	index,isOk :=this.customerService.FindUpdate(index)
	if isOk {
		fmt.Println("姓名:")
		name :=""
		fmt.Scanln(&name)
		fmt.Println("性别:")
		gender :=""
		fmt.Scanln(&gender)
		fmt.Println("年龄:")
		age :=0
		fmt.Scanln(&age)
		fmt.Println("电话:")
		phone :=""
		fmt.Scanln(&phone)
		fmt.Println("邮箱:")
		email:=""
		fmt.Scanln(&email)
		customer := model.NewCustomer2(name,gender,age,phone,email)

		if isOk :=this.customerService.Update(index,customer); isOk {
			fmt.Println("------修改完成------")
		}else {
			fmt.Println("------修改失败------")
		}
	}else {
		fmt.Println("------没有对应编号用户------")
	}
	
}
// 显示主菜单
func(this *customerView) mainMenu(){
	for{
		fmt.Println("-----------------客户信息管理软件-----------------") 
		fmt.Println("----------------- 1 添 加 客 户-----------------") 
		fmt.Println("----------------- 2 修 改 客 户-----------------") 
		fmt.Println("----------------- 3 删 除 客 户-----------------")
		fmt.Println("----------------- 4 客 户 列 表-----------------") 
		fmt.Println("----------------- 5 退 出-----------------") 
		fmt.Print("请选择(1-5)：")

		fmt.Scanln(&this.key)
		switch this.key {
			case "1" : 
				this.add()
			case "2" : 
				this.update()
			case "3" : 
				this.delete()
			case "4" :
				this.list()
			case "5" :
				this.loop = false
			default:
				fmt.Println("输入有误，请重新输入")
			
		}
		if !this.loop {
			fmt.Println("exit...")
			break
		}
	}

}



func  main()  {
	customerView := customerView{
		key :"",
		loop : true,
	}
	// 这里完成对结构体customerService字段的初始化
	customerView.customerService = service.NewCustomerService()

	customerView.mainMenu()
}